Skip to content

chore: version packages - #85

Merged
jonlaing merged 1 commit into
mainfrom
changeset-release/main
Aug 7, 2026
Merged

chore: version packages#85
jonlaing merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@effex/dom@1.4.8

Patch Changes

  • 30f2c32: fix(animation): wait one paint before hydration enter animations

    On cold first-load (new tab, no cache), the browser can schedule the
    hydration fiber before it finishes parsing/applying stylesheets — either
    <link> sheets that are still being fetched or Vite dev's JS-injected
    styles that haven't been evaluated yet.

    When that happened, runEnterAnimation's forceReflow captured a
    "before" state with no transition-property set, then the class swap
    happened instantly — the transition-triggering moment passed without
    transition-* in effect, transitionend never fired, and the animation
    system logged the "Animation timeout reached" warning after 5 seconds.
    The affected element ended up at its enterTo state with no animation.
    Refresh made the problem go away because stylesheets were already cached
    and applied synchronously.

    forkSlotEnter now waits for a single requestAnimationFrame on the
    hydration path before starting the enter lifecycle. rAF runs just before
    the browser's next paint, at which point all pending stylesheet parsing
    is complete, so forceReflow captures the correct pre-transition state
    and the class swap fires a proper transition.

    The wait is scoped to hydration only; post-hydration animations (route
    changes, list reconciles) don't pay the rAF cost.

  • 567a41c: fix(router): Outlet now actually applies its animation configuration

    OutletConfig.animate was defined in the type but never read in the
    implementation — the underlying reconcile call passed only
    getTargetKeys and renderSlot, so nothing wired the animation config
    through to the control ctx. Consumers configuring animate saw abrupt
    route transitions regardless of what they set.

    Outlet now provides AnimationConfigCtx (the same tag when/match/
    each use) via Effect.provideService, matching the pattern those
    combinators follow. provideService uses provideContext internally
    rather than provideSomeLayer's scopedWith — no scope is created and
    no finalizer race is introduced (see fix(hydrate): keep options.layers alive for the app's lifetime #78 for the finalizer-race pattern
    we're deliberately avoiding).

    Also adds an intro?: boolean field to OutletConfig, so the initially
    matched route can re-animate on hydration in cases like a decorative
    opening scene. Same shape as when/match/each/animated.

    AnimationConfigCtx and ClientControlCtx are now re-exported from
    @effex/dom's package root (they were exported from
    @effex/dom/Control/index.ts but not lifted).

@effex/router@1.3.9

Patch Changes

  • 567a41c: fix(router): Outlet now actually applies its animation configuration

    OutletConfig.animate was defined in the type but never read in the
    implementation — the underlying reconcile call passed only
    getTargetKeys and renderSlot, so nothing wired the animation config
    through to the control ctx. Consumers configuring animate saw abrupt
    route transitions regardless of what they set.

    Outlet now provides AnimationConfigCtx (the same tag when/match/
    each use) via Effect.provideService, matching the pattern those
    combinators follow. provideService uses provideContext internally
    rather than provideSomeLayer's scopedWith — no scope is created and
    no finalizer race is introduced (see fix(hydrate): keep options.layers alive for the app's lifetime #78 for the finalizer-race pattern
    we're deliberately avoiding).

    Also adds an intro?: boolean field to OutletConfig, so the initially
    matched route can re-animate on hydration in cases like a decorative
    opening scene. Same shape as when/match/each/animated.

    AnimationConfigCtx and ClientControlCtx are now re-exported from
    @effex/dom's package root (they were exported from
    @effex/dom/Control/index.ts but not lifted).

  • Updated dependencies [30f2c32]

  • Updated dependencies [567a41c]

    • @effex/dom@1.4.8

docs@0.0.32

Patch Changes

  • Updated dependencies [30f2c32]
  • Updated dependencies [567a41c]
    • @effex/dom@1.4.8
    • @effex/router@1.3.9

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying effex with  Cloudflare Pages  Cloudflare Pages

Latest commit: 35eb193
Status: ✅  Deploy successful!
Preview URL: https://b2783344.effex.pages.dev
Branch Preview URL: https://changeset-release-main.effex.pages.dev

View logs

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying effex-api with  Cloudflare Pages  Cloudflare Pages

Latest commit: 35eb193
Status: ✅  Deploy successful!
Preview URL: https://0cb0ea72.effex-api.pages.dev
Branch Preview URL: https://changeset-release-main.effex-api.pages.dev

View logs

@jonlaing
jonlaing merged commit 6bdb6e9 into main Aug 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant